{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Dataset\n",
    "\n",
    "Download the dataset and save it to a directory at per your convience. [IMDB comments](https://github.com/abulbasar/data/blob/master/imdb-comments.json.zip?raw=true)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd # Used for dataframe functions\n",
    "import json # parse json string\n",
    "import nltk # Natural language toolkit for TDIDF etc.\n",
    "from bs4 import BeautifulSoup # Parse html string .. to extract text\n",
    "import re # Regex parser \n",
    "import numpy as np # Linear algebbra \n",
    "from sklearn import * # machine learning\n",
    "import matplotlib.pyplot as plt # Visualization\n",
    "\n",
    "\n",
    "# Wordcloud does not work on Windows. \n",
    "# Comment the below if you want to skip\n",
    "from wordcloud import WordCloud # Word cloud visualization\n",
    "import scipy #Sparse matrix \n",
    "\n",
    "np.set_printoptions(precision=4)\n",
    "pd.options.display.max_columns = 1000\n",
    "pd.options.display.max_rows = 10\n",
    "pd.options.display.float_format = lambda f: \"%.4f\" % f\n",
    "\n",
    "%matplotlib inline "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following lines when you run this notebook first time on your system."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package punkt to /Users/abasar/nltk_data...\n",
      "[nltk_data]   Unzipping tokenizers/punkt.zip.\n",
      "[nltk_data] Downloading package stopwords to\n",
      "[nltk_data]     /Users/abasar/nltk_data...\n",
      "[nltk_data]   Package stopwords is already up-to-date!\n",
      "[nltk_data] Downloading package wordnet to /Users/abasar/nltk_data...\n",
      "[nltk_data]   Package wordnet is already up-to-date!\n",
      "[nltk_data] Downloading package averaged_perceptron_tagger to\n",
      "[nltk_data]     /Users/abasar/nltk_data...\n",
      "[nltk_data]   Package averaged_perceptron_tagger is already up-to-\n",
      "[nltk_data]       date!\n",
      "[nltk_data] Downloading package vader_lexicon to\n",
      "[nltk_data]     /Users/abasar/nltk_data...\n",
      "[nltk_data]   Package vader_lexicon is already up-to-date!\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import nltk\n",
    "nltk.download(\"punkt\")\n",
    "nltk.download(\"stopwords\")\n",
    "nltk.download(\"wordnet\")\n",
    "nltk.download('averaged_perceptron_tagger')\n",
    "nltk.download(\"vader_lexicon\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.4.5\n"
     ]
    }
   ],
   "source": [
    "print(nltk.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's see how to create text classifier using nltk and scikit learn."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"label\":\"test\",\"sentiment\":\"pos\",\"name\":\"0_10.txt\",\"content\":\"I went and saw this movie last night after being coaxed to by a few friends of mine. I'll admit that I was reluctant to see it because from what I knew of Ashton Kutcher he was only able to do comedy. I was wrong. Kutcher played the character of Jake Fischer very well, and Kevin Costner played Ben Randall with such professionalism. The sign of a good movie is that it can toy with our emotions. This one did exactly that. The entire theater (which was sold out) was overcome by laughter during the first half of the movie, and were moved to tears during the second half. While exiting the theater I not only saw many women in tears, but many full grown men as well, trying desperately not to let anyone see them crying. This movie was great, and I suggest that you go see it before you judge.\"}\r\n"
     ]
    }
   ],
   "source": [
    "# The following line does not work on Windows system\n",
    "!head -n 1 /data/imdb-comments.json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = []\n",
    "with open(\"/data/imdb-comments.json\", \"r\", encoding=\"utf8\") as f:\n",
    "    for l in f.readlines():\n",
    "        data.append(json.loads(l))    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>sentiment</th>\n",
       "      <th>name</th>\n",
       "      <th>content</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>11965</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>951_10.txt</td>\n",
       "      <td>if u haven't seen Vijay in \"Ghillli\", \"Gilly\" ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9445</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>7251_9.txt</td>\n",
       "      <td>Robert Carlyle excels again. The period was ca...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39395</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>11706_3.txt</td>\n",
       "      <td>A novel by Remarque. A cast that looks great o...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1160</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>11044_7.txt</td>\n",
       "      <td>'Anne Christie' was Garbo's 14th film and the ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21277</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>6650_1.txt</td>\n",
       "      <td>This is one of those movies where I was rootin...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6957</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>5011_10.txt</td>\n",
       "      <td>I saw the movie at the Nashville film festival...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49884</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>9898_1.txt</td>\n",
       "      <td>This version of \"Moby Dick\" insults the audien...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26891</td>\n",
       "      <td>train</td>\n",
       "      <td>pos</td>\n",
       "      <td>11702_10.txt</td>\n",
       "      <td>A Thief in the Night has got to be the best ou...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24352</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>9418_2.txt</td>\n",
       "      <td>When you see Barry Corbin in the cast of a mov...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38956</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>11310_1.txt</td>\n",
       "      <td>First of all, yes, animals have emotions. If y...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       label sentiment          name  \\\n",
       "11965   test       pos    951_10.txt   \n",
       "9445    test       pos    7251_9.txt   \n",
       "39395  train       neg   11706_3.txt   \n",
       "1160    test       pos   11044_7.txt   \n",
       "21277   test       neg    6650_1.txt   \n",
       "6957    test       pos   5011_10.txt   \n",
       "49884  train       neg    9898_1.txt   \n",
       "26891  train       pos  11702_10.txt   \n",
       "24352   test       neg    9418_2.txt   \n",
       "38956  train       neg   11310_1.txt   \n",
       "\n",
       "                                                 content  \n",
       "11965  if u haven't seen Vijay in \"Ghillli\", \"Gilly\" ...  \n",
       "9445   Robert Carlyle excels again. The period was ca...  \n",
       "39395  A novel by Remarque. A cast that looks great o...  \n",
       "1160   'Anne Christie' was Garbo's 14th film and the ...  \n",
       "21277  This is one of those movies where I was rootin...  \n",
       "6957   I saw the movie at the Nashville film festival...  \n",
       "49884  This version of \"Moby Dick\" insults the audien...  \n",
       "26891  A Thief in the Night has got to be the best ou...  \n",
       "24352  When you see Barry Corbin in the cast of a mov...  \n",
       "38956  First of all, yes, animals have emotions. If y...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments = pd.DataFrame.from_dict(data)\n",
    "comments.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 50000 entries, 0 to 49999\n",
      "Data columns (total 4 columns):\n",
      "label        50000 non-null object\n",
      "sentiment    50000 non-null object\n",
      "name         50000 non-null object\n",
      "content      50000 non-null object\n",
      "dtypes: object(4)\n",
      "memory usage: 1.5+ MB\n"
     ]
    }
   ],
   "source": [
    "comments.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "train    25000\n",
       "test     25000\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments.label.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>sentiment</th>\n",
       "      <th>neg</th>\n",
       "      <th>pos</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>label</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>test</td>\n",
       "      <td>12500</td>\n",
       "      <td>12500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>train</td>\n",
       "      <td>12500</td>\n",
       "      <td>12500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sentiment    neg    pos\n",
       "label                  \n",
       "test       12500  12500\n",
       "train      12500  12500"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments.groupby([\"label\", \"sentiment\"]).content.count().unstack()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'When we started watching this series on cable, I had no idea how addictive it would be. Even when you hate a character, you hold back because they are so beautifully developed, you can almost understand why they react to frustration, fear, greed or temptation the way they do. It\\'s almost as if the viewer is experiencing one of Christopher\\'s learning curves.<br /><br />I can\\'t understand why Adriana would put up with Christopher\\'s abuse of her, verbally, physically and emotionally, but I just have to read the newspaper to see how many women can and do tolerate such behavior. Carmella has a dream house, endless supply of expensive things, but I\\'m sure she would give it up for a loving and faithful husband - or maybe not. That\\'s why I watch.<br /><br />It doesn\\'t matter how many times you watch an episode, you can find something you missed the first five times. We even watch episodes out of sequence (watch season 1 on late night with commercials but all the language, A&E with language censored, reruns on the Movie Network) - whenever they\\'re on, we\\'re there. We\\'ve been totally spoiled now.<br /><br />I also love the Malaprop\\'s. \"An albacore around my neck\" is my favorite of Johnny Boy. When these jewels have entered our family vocabulary, it is a sign that I should get a life. I will when the series ends, and I have collected all the DVD\\'s, and put the collection in my will.'"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "v = list(comments[\"content\"].sample(1))[0]\n",
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>sentiment</th>\n",
       "      <th>name</th>\n",
       "      <th>content</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>0_10.txt</td>\n",
       "      <td>I went and saw this movie last night after bei...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10000_7.txt</td>\n",
       "      <td>Actor turned director Bill Paxton follows up h...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10001_9.txt</td>\n",
       "      <td>As a recreational golfer with some knowledge o...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10002_8.txt</td>\n",
       "      <td>I saw this film in a sneak preview, and it is ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10003_8.txt</td>\n",
       "      <td>Bill Paxton has taken the true story of the 19...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  label sentiment         name  \\\n",
       "0  test       pos     0_10.txt   \n",
       "1  test       pos  10000_7.txt   \n",
       "2  test       pos  10001_9.txt   \n",
       "3  test       pos  10002_8.txt   \n",
       "4  test       pos  10003_8.txt   \n",
       "\n",
       "                                             content  \n",
       "0  I went and saw this movie last night after bei...  \n",
       "1  Actor turned director Bill Paxton follows up h...  \n",
       "2  As a recreational golfer with some knowledge o...  \n",
       "3  I saw this film in a sneak preview, and it is ...  \n",
       "4  Bill Paxton has taken the true story of the 19...  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"I went and saw this movie last night after being coaxed to by a few friends of mine. I'll admit that I was reluctant to see it because from what I knew of Ashton Kutcher he was only able to do comedy. I was wrong. Kutcher played the character of Jake Fischer very well, and Kevin Costner played Ben Randall with such professionalism. The sign of a good movie is that it can toy with our emotions. This one did exactly that. The entire theater (which was sold out) was overcome by laughter during the first half of the movie, and were moved to tears during the second half. While exiting the theater I not only saw many women in tears, but many full grown men as well, trying desperately not to let anyone see them crying. This movie was great, and I suggest that you go see it before you judge.\""
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments[\"content\"].values[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Vader Sentiment Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from nltk.sentiment.vader import SentimentIntensityAnalyzer\n",
    "sia = SentimentIntensityAnalyzer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'neg': 0.085, 'neu': 0.775, 'pos': 0.14, 'compound': 0.7956}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sia.polarity_scores(comments[\"content\"].values[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7956"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def sentiment_score(text):\n",
    "    return sia.polarity_scores(text)[\"compound\"]\n",
    "\n",
    "sentiment_score(comments[\"content\"].values[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 39s, sys: 192 ms, total: 1min 39s\n",
      "Wall time: 1min 39s\n"
     ]
    }
   ],
   "source": [
    "%%time \n",
    "comments[\"vader_score\"] = comments[\"content\"].apply(lambda text: sentiment_score(text))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "comments[\"vader_sentiment\"] = np.where(comments[\"vader_score\"]>0, \"pos\", \"neg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>sentiment</th>\n",
       "      <th>name</th>\n",
       "      <th>content</th>\n",
       "      <th>vader_score</th>\n",
       "      <th>vader_sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>0_10.txt</td>\n",
       "      <td>I went and saw this movie last night after bei...</td>\n",
       "      <td>0.7956</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10000_7.txt</td>\n",
       "      <td>Actor turned director Bill Paxton follows up h...</td>\n",
       "      <td>0.9948</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10001_9.txt</td>\n",
       "      <td>As a recreational golfer with some knowledge o...</td>\n",
       "      <td>0.9726</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10002_8.txt</td>\n",
       "      <td>I saw this film in a sneak preview, and it is ...</td>\n",
       "      <td>0.9266</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10003_8.txt</td>\n",
       "      <td>Bill Paxton has taken the true story of the 19...</td>\n",
       "      <td>0.9906</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  label sentiment         name  \\\n",
       "0  test       pos     0_10.txt   \n",
       "1  test       pos  10000_7.txt   \n",
       "2  test       pos  10001_9.txt   \n",
       "3  test       pos  10002_8.txt   \n",
       "4  test       pos  10003_8.txt   \n",
       "\n",
       "                                             content  vader_score  \\\n",
       "0  I went and saw this movie last night after bei...       0.7956   \n",
       "1  Actor turned director Bill Paxton follows up h...       0.9948   \n",
       "2  As a recreational golfer with some knowledge o...       0.9726   \n",
       "3  I saw this film in a sneak preview, and it is ...       0.9266   \n",
       "4  Bill Paxton has taken the true story of the 19...       0.9906   \n",
       "\n",
       "  vader_sentiment  \n",
       "0             pos  \n",
       "1             pos  \n",
       "2             pos  \n",
       "3             pos  \n",
       "4             pos  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pos    33008\n",
       "neg    16992\n",
       "Name: vader_sentiment, dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments.vader_sentiment.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "         neg       0.79      0.54      0.64     25000\n",
      "         pos       0.65      0.86      0.74     25000\n",
      "\n",
      "    accuracy                           0.70     50000\n",
      "   macro avg       0.72      0.70      0.69     50000\n",
      "weighted avg       0.72      0.70      0.69     50000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(metrics.classification_report(comments[\"sentiment\"], comments[\"vader_sentiment\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we see above the accuracy is the range of 0.70. Vader model performed better for the positive sentiment compared to negative sentiment. Let's now use statistical model using TFIDF which generally perform better. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sentiment Analysis using statistical model using TFIDF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'when we started watching this series on cable i had no idea how addictive it would be even when you hate a character you hold back because they are so beautifully developed you can almost understand why they react to frustration fear greed or temptation the way they do it s almost as if the viewer is experiencing one of christopher s learning curves i can t understand why adriana would put up with christopher s abuse of her verbally physically and emotionally but i just have to read the newspaper to see how many women can and do tolerate such behavior carmella has a dream house endless supply of expensive things but i m sure she would give it up for a loving and faithful husband or maybe not that s why i watch it doesn t matter how many times you watch an episode you can find something you missed the first five times we even watch episodes out of sequence watch season 1 on late night with commercials but all the language a e with language censored reruns on the movie network whenever they re on we re there we ve been totally spoiled now i also love the malaprop s an albacore around my neck is my favorite of johnny boy when these jewels have entered our family vocabulary it is a sign that i should get a life i will when the series ends and i have collected all the dvd s and put the collection in my will '"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def preprocess(text):\n",
    "    \n",
    "    # Remove html tags\n",
    "    text = BeautifulSoup(text.lower(), \"html5lib\").text \n",
    "    \n",
    "    # Replace the occurrences of multiple consecutive non-word ccharacters \n",
    "    # with a single space (\" \")\n",
    "    text = re.sub(r\"[\\W]+\", \" \", text)\n",
    "    return text\n",
    "\n",
    "preprocess(v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 30.9 s, sys: 57.6 ms, total: 30.9 s\n",
      "Wall time: 30.9 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "# Apply the preprocessing logic to all comments\n",
    "comments[\"content\"] = comments[\"content\"].apply(preprocess)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>sentiment</th>\n",
       "      <th>name</th>\n",
       "      <th>content</th>\n",
       "      <th>vader_score</th>\n",
       "      <th>vader_sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>25496</td>\n",
       "      <td>train</td>\n",
       "      <td>pos</td>\n",
       "      <td>10447_10.txt</td>\n",
       "      <td>there are many people in our lives that we mee...</td>\n",
       "      <td>0.9814</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41520</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>2369_4.txt</td>\n",
       "      <td>sixth escapade for freddy krueger in which he ...</td>\n",
       "      <td>0.9802</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48525</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>8674_2.txt</td>\n",
       "      <td>the first few minutes of the bodyguard do have...</td>\n",
       "      <td>0.4435</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26037</td>\n",
       "      <td>train</td>\n",
       "      <td>pos</td>\n",
       "      <td>10934_10.txt</td>\n",
       "      <td>after reviewing this intense martial arts movi...</td>\n",
       "      <td>0.6862</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43823</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>4441_3.txt</td>\n",
       "      <td>triumph of love is proof that not every coméd...</td>\n",
       "      <td>0.9217</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39666</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>11950_2.txt</td>\n",
       "      <td>this is without a doubt the worst movie i have...</td>\n",
       "      <td>0.1877</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40882</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>1795_2.txt</td>\n",
       "      <td>i had the opportunity to preview this film as ...</td>\n",
       "      <td>0.6735</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43156</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>3841_1.txt</td>\n",
       "      <td>roeg has done some great movies but this a tur...</td>\n",
       "      <td>0.6858</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37185</td>\n",
       "      <td>train</td>\n",
       "      <td>pos</td>\n",
       "      <td>9718_7.txt</td>\n",
       "      <td>possible spoiler in some way how to alienate f...</td>\n",
       "      <td>0.9909</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40330</td>\n",
       "      <td>train</td>\n",
       "      <td>neg</td>\n",
       "      <td>1298_3.txt</td>\n",
       "      <td>sogo ishii can be a skilled filmmaker under th...</td>\n",
       "      <td>-0.9517</td>\n",
       "      <td>neg</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       label sentiment          name  \\\n",
       "25496  train       pos  10447_10.txt   \n",
       "41520  train       neg    2369_4.txt   \n",
       "48525  train       neg    8674_2.txt   \n",
       "26037  train       pos  10934_10.txt   \n",
       "43823  train       neg    4441_3.txt   \n",
       "39666  train       neg   11950_2.txt   \n",
       "40882  train       neg    1795_2.txt   \n",
       "43156  train       neg    3841_1.txt   \n",
       "37185  train       pos    9718_7.txt   \n",
       "40330  train       neg    1298_3.txt   \n",
       "\n",
       "                                                 content  vader_score  \\\n",
       "25496  there are many people in our lives that we mee...       0.9814   \n",
       "41520  sixth escapade for freddy krueger in which he ...       0.9802   \n",
       "48525  the first few minutes of the bodyguard do have...       0.4435   \n",
       "26037  after reviewing this intense martial arts movi...       0.6862   \n",
       "43823   triumph of love is proof that not every coméd...       0.9217   \n",
       "39666  this is without a doubt the worst movie i have...       0.1877   \n",
       "40882  i had the opportunity to preview this film as ...       0.6735   \n",
       "43156  roeg has done some great movies but this a tur...       0.6858   \n",
       "37185  possible spoiler in some way how to alienate f...       0.9909   \n",
       "40330  sogo ishii can be a skilled filmmaker under th...      -0.9517   \n",
       "\n",
       "      vader_sentiment  \n",
       "25496             pos  \n",
       "41520             pos  \n",
       "48525             pos  \n",
       "26037             pos  \n",
       "43823             pos  \n",
       "39666             pos  \n",
       "40882             pos  \n",
       "43156             pos  \n",
       "37185             pos  \n",
       "40330             neg  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments_train = comments[comments[\"label\"] == \"train\"]\n",
    "comments_train.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>label</th>\n",
       "      <th>sentiment</th>\n",
       "      <th>name</th>\n",
       "      <th>content</th>\n",
       "      <th>vader_score</th>\n",
       "      <th>vader_sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>21277</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>6650_1.txt</td>\n",
       "      <td>this is one of those movies where i was rootin...</td>\n",
       "      <td>-0.9583</td>\n",
       "      <td>neg</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12620</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>10108_1.txt</td>\n",
       "      <td>spoilersi m going to be as kind as i can about...</td>\n",
       "      <td>-0.1144</td>\n",
       "      <td>neg</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4485</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>2788_9.txt</td>\n",
       "      <td>as a former erasmus student i enjoyed this fil...</td>\n",
       "      <td>0.9514</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4744</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>301_10.txt</td>\n",
       "      <td>francis ford coppola s masterpiece was a great...</td>\n",
       "      <td>-0.8899</td>\n",
       "      <td>neg</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10329</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>8047_10.txt</td>\n",
       "      <td>some of the reviewers here have foolishly judg...</td>\n",
       "      <td>0.9353</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14366</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>11680_1.txt</td>\n",
       "      <td>this is by far one of the most pretentious fil...</td>\n",
       "      <td>-0.0498</td>\n",
       "      <td>neg</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1007</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>10907_8.txt</td>\n",
       "      <td>this is truly a funny movie his dance scene do...</td>\n",
       "      <td>0.9489</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4539</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>2836_8.txt</td>\n",
       "      <td>this film released in 1951 has the usual eleme...</td>\n",
       "      <td>0.1714</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7864</td>\n",
       "      <td>test</td>\n",
       "      <td>pos</td>\n",
       "      <td>5829_10.txt</td>\n",
       "      <td>one of the best tv shows out there if not the ...</td>\n",
       "      <td>0.9692</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19582</td>\n",
       "      <td>test</td>\n",
       "      <td>neg</td>\n",
       "      <td>5124_4.txt</td>\n",
       "      <td>this movie was jerry bruckheimer s idea to sel...</td>\n",
       "      <td>0.9559</td>\n",
       "      <td>pos</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      label sentiment         name  \\\n",
       "21277  test       neg   6650_1.txt   \n",
       "12620  test       neg  10108_1.txt   \n",
       "4485   test       pos   2788_9.txt   \n",
       "4744   test       pos   301_10.txt   \n",
       "10329  test       pos  8047_10.txt   \n",
       "14366  test       neg  11680_1.txt   \n",
       "1007   test       pos  10907_8.txt   \n",
       "4539   test       pos   2836_8.txt   \n",
       "7864   test       pos  5829_10.txt   \n",
       "19582  test       neg   5124_4.txt   \n",
       "\n",
       "                                                 content  vader_score  \\\n",
       "21277  this is one of those movies where i was rootin...      -0.9583   \n",
       "12620  spoilersi m going to be as kind as i can about...      -0.1144   \n",
       "4485   as a former erasmus student i enjoyed this fil...       0.9514   \n",
       "4744   francis ford coppola s masterpiece was a great...      -0.8899   \n",
       "10329  some of the reviewers here have foolishly judg...       0.9353   \n",
       "14366  this is by far one of the most pretentious fil...      -0.0498   \n",
       "1007   this is truly a funny movie his dance scene do...       0.9489   \n",
       "4539   this film released in 1951 has the usual eleme...       0.1714   \n",
       "7864   one of the best tv shows out there if not the ...       0.9692   \n",
       "19582  this movie was jerry bruckheimer s idea to sel...       0.9559   \n",
       "\n",
       "      vader_sentiment  \n",
       "21277             neg  \n",
       "12620             neg  \n",
       "4485              pos  \n",
       "4744              neg  \n",
       "10329             pos  \n",
       "14366             neg  \n",
       "1007              pos  \n",
       "4539              pos  \n",
       "7864              pos  \n",
       "19582             pos  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comments_test = comments[comments[\"label\"] == \"test\"]\n",
    "comments_test.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = comments_train[\"content\"].values\n",
    "y_train = np.where(comments_train.sentiment == \"pos\", 1, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = comments_test[\"content\"].values\n",
    "y_test = np.where(comments_test.sentiment == \"pos\", 1, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('arabic', 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish')\n"
     ]
    }
   ],
   "source": [
    "# http://snowball.tartarus.org/algorithms/porter/stemmer.html\n",
    "# http://www.nltk.org/howto/stem.html\n",
    "\n",
    "from nltk.stem.snowball import SnowballStemmer\n",
    "from nltk.stem.porter import PorterStemmer\n",
    "print(SnowballStemmer.languages)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>original</th>\n",
       "      <th>porter</th>\n",
       "      <th>snowball</th>\n",
       "      <th>lemmatizer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>revival</td>\n",
       "      <td>reviv</td>\n",
       "      <td>reviv</td>\n",
       "      <td>revival</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>allowance</td>\n",
       "      <td>allow</td>\n",
       "      <td>allow</td>\n",
       "      <td>allowance</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>inference</td>\n",
       "      <td>infer</td>\n",
       "      <td>infer</td>\n",
       "      <td>inference</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>relational</td>\n",
       "      <td>relat</td>\n",
       "      <td>relat</td>\n",
       "      <td>relational</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>runner</td>\n",
       "      <td>runner</td>\n",
       "      <td>runner</td>\n",
       "      <td>runner</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>wasn't</td>\n",
       "      <td>wasn't</td>\n",
       "      <td>wasn't</td>\n",
       "      <td>wasn't</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>leaves</td>\n",
       "      <td>leav</td>\n",
       "      <td>leav</td>\n",
       "      <td>leave</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>swimming</td>\n",
       "      <td>swim</td>\n",
       "      <td>swim</td>\n",
       "      <td>swim</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>relative</td>\n",
       "      <td>rel</td>\n",
       "      <td>relat</td>\n",
       "      <td>relative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>relating</td>\n",
       "      <td>relat</td>\n",
       "      <td>relat</td>\n",
       "      <td>relate</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>15 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      original  porter snowball  lemmatizer\n",
       "0      revival   reviv    reviv     revival\n",
       "1    allowance   allow    allow   allowance\n",
       "2    inference   infer    infer   inference\n",
       "3   relational   relat    relat  relational\n",
       "4       runner  runner   runner      runner\n",
       "..         ...     ...      ...         ...\n",
       "10      wasn't  wasn't   wasn't      wasn't\n",
       "11      leaves    leav     leav       leave\n",
       "12    swimming    swim     swim        swim\n",
       "13    relative     rel    relat    relative\n",
       "14    relating   relat    relat      relate\n",
       "\n",
       "[15 rows x 4 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "porter = PorterStemmer()\n",
    "snowball = SnowballStemmer(\"english\")\n",
    "lemmatizer = nltk.wordnet.WordNetLemmatizer()\n",
    "\n",
    "values = []\n",
    "\n",
    "for s in nltk.word_tokenize(\"\"\"\n",
    "            revival\n",
    "            allowance \n",
    "            inference \n",
    "            relational\n",
    "            runner\n",
    "            runs\n",
    "            ran\n",
    "            has\n",
    "            having\n",
    "            generously\n",
    "            wasn't\n",
    "            leaves\n",
    "            swimming\n",
    "            relative\n",
    "            relating\n",
    "            \"\"\"):\n",
    "    values.append((s, porter.stem(s)\n",
    "          , snowball.stem(s), lemmatizer.lemmatize(s, \"v\")))\n",
    "    \n",
    "pd.DataFrame(values, columns = [\"original\", \"porter\", \"snowball\", \"lemmatizer\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "179 ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', \"you're\", \"you've\", \"you'll\", \"you'd\", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', \"she's\", 'her', 'hers', 'herself', 'it', \"it's\", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', \"that'll\", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', \"don't\", 'should', \"should've\", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', \"aren't\", 'couldn', \"couldn't\", 'didn', \"didn't\", 'doesn', \"doesn't\", 'hadn', \"hadn't\", 'hasn', \"hasn't\", 'haven', \"haven't\", 'isn', \"isn't\", 'ma', 'mightn', \"mightn't\", 'mustn', \"mustn't\", 'needn', \"needn't\", 'shan', \"shan't\", 'shouldn', \"shouldn't\", 'wasn', \"wasn't\", 'weren', \"weren't\", 'won', \"won't\", 'wouldn', \"wouldn't\"]\n"
     ]
    }
   ],
   "source": [
    "stopwords = nltk.corpus.stopwords.words(\"english\")\n",
    "print(len(stopwords), stopwords)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets drop the following words from stopwords since they are likely good indicator of sentiment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "stopwords.remove(\"no\")\n",
    "stopwords.remove(\"nor\")\n",
    "stopwords.remove(\"not\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['financi', 'servic', 'revenu', 'increas', '$', '0.5', 'billion', ',', '5', '%', ',', 'primarili', 'due', 'lower', 'impair', 'volum', 'growth', ',', 'partial', 'offset', 'lower', 'gain', '.']\n"
     ]
    }
   ],
   "source": [
    "sentence = \"\"\"Financial Services revenues increased $0.5 billion, or 5%, primarily due to\n",
    "lower impairments and volume growth, partially offset by lower gains.\"\"\"\n",
    "\n",
    "stemmer = SnowballStemmer(\"english\")\n",
    "#stemmer = PorterStemmer()\n",
    "def my_tokenizer(s):\n",
    "    terms = nltk.word_tokenize(s.lower())\n",
    "    #terms = re.split(\"\\s\", s.lower())\n",
    "    #terms = [re.sub(r\"[\\.!]\", \"\", v) for v in terms if len(v)>2]\n",
    "    #terms = [v for v in terms if len(v)>2]\n",
    "    terms = [v for v in terms if v not in stopwords]\n",
    "    terms = [stemmer.stem(w) for w in terms]\n",
    "    #terms = [term for term in terms if len(term) > 2]\n",
    "    return terms \n",
    "print(my_tokenizer(sentence))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vocabulary:  {'today': 13, 'wednesday': 18, 'today wednesday': 15, 'delhi': 3, 'weather': 16, 'hot': 6, '.': 0, 'delhi weather': 5, 'weather hot': 17, 'hot today': 7, 'today .': 14, 'road': 11, 'not': 9, 'busi': 1, 'morn': 8, 'delhi road': 4, 'road not': 12, 'not busi': 10, 'busi morn': 2}\n"
     ]
    }
   ],
   "source": [
    "tfidf = feature_extraction.text.TfidfVectorizer(tokenizer=my_tokenizer, max_df = 0.95, min_df=0.0001 \n",
    "                                                , ngram_range=(1, 2))\n",
    "\n",
    "corpus = [\"Today is Wednesday\"\n",
    "          , \"Delhi weather is hot today.\"\n",
    "          , \"Delhi roads are not busy in the morning\"]\n",
    "\n",
    "doc_term_matrix = tfidf.fit_transform(corpus)\n",
    "\n",
    "# returns term and index in the feature matrix\n",
    "print(\"Vocabulary: \", tfidf.vocabulary_) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>.</th>\n",
       "      <th>busi</th>\n",
       "      <th>busi morn</th>\n",
       "      <th>delhi</th>\n",
       "      <th>delhi road</th>\n",
       "      <th>delhi weather</th>\n",
       "      <th>hot</th>\n",
       "      <th>hot today</th>\n",
       "      <th>morn</th>\n",
       "      <th>not</th>\n",
       "      <th>not busi</th>\n",
       "      <th>road</th>\n",
       "      <th>road not</th>\n",
       "      <th>today</th>\n",
       "      <th>today .</th>\n",
       "      <th>today wednesday</th>\n",
       "      <th>weather</th>\n",
       "      <th>weather hot</th>\n",
       "      <th>wednesday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.4736</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.6228</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.6228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.2663</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.2663</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.3501</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.3414</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       .   busi  busi morn  delhi  delhi road  delhi weather    hot  \\\n",
       "0 0.0000 0.0000     0.0000 0.0000      0.0000         0.0000 0.0000   \n",
       "1 0.3501 0.0000     0.0000 0.2663      0.0000         0.3501 0.3501   \n",
       "2 0.0000 0.3414     0.3414 0.2597      0.3414         0.0000 0.0000   \n",
       "\n",
       "   hot today   morn    not  not busi   road  road not  today  today .  \\\n",
       "0     0.0000 0.0000 0.0000    0.0000 0.0000    0.0000 0.4736   0.0000   \n",
       "1     0.3501 0.0000 0.0000    0.0000 0.0000    0.0000 0.2663   0.3501   \n",
       "2     0.0000 0.3414 0.3414    0.3414 0.3414    0.3414 0.0000   0.0000   \n",
       "\n",
       "   today wednesday  weather  weather hot  wednesday  \n",
       "0           0.6228   0.0000       0.0000     0.6228  \n",
       "1           0.0000   0.3501       0.3501     0.0000  \n",
       "2           0.0000   0.0000       0.0000     0.0000  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns = [None] * len(tfidf.vocabulary_)\n",
    "for term in tfidf.vocabulary_:\n",
    "    columns[tfidf.vocabulary_[term]] = term\n",
    "columns\n",
    "scores = pd.DataFrame(doc_term_matrix.toarray()\n",
    "                      , columns= columns)\n",
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_tfidf = tfidf.fit_transform(X_train)\n",
    "X_test_tfidf = tfidf.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((25000, 193057), (25000,), (25000, 193057), (25000,))"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test_tfidf.shape, y_test.shape, X_train_tfidf.shape, y_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's estimate the memory requirment if the data is presented in dense matrix format"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "17.979834228754044"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cell_count = np.product(X_train_tfidf.shape)\n",
    "bytes = cell_count * 4 \n",
    "GBs = bytes / (1024 ** 3) \n",
    "GBs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9992081565547999"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sparsity = 1 - X_train_tfidf.count_nonzero() / cell_count\n",
    "sparsity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9992081565547999"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1 - X_train_tfidf.nnz / cell_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Type of doc_term_matrix <class 'scipy.sparse.csr.csr_matrix'>\n"
     ]
    }
   ],
   "source": [
    "print(\"Type of doc_term_matrix\", type(X_train_tfidf))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Byte size of the training doc sparse doc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.02847442775964737 GB\n"
     ]
    }
   ],
   "source": [
    "print(X_train_tfidf.data.nbytes / (1024.0 ** 3), \"GB\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Classification Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training accuracy:  0.93476\n",
      "Test accuracy:  0.88596\n",
      "CPU times: user 1.01 s, sys: 5.75 ms, total: 1.02 s\n",
      "Wall time: 1.07 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "lr = linear_model.LogisticRegression(C = 0.6, random_state = 1\n",
    "                            , n_jobs = 8, solver=\"saga\")\n",
    "lr.fit(X_train_tfidf, y_train)\n",
    "y_train_pred = lr.predict(X_train_tfidf)\n",
    "y_test_pred = lr.predict(X_test_tfidf)\n",
    "print(\"Training accuracy: \", metrics.accuracy_score(y_train, y_train_pred))\n",
    "print(\"Test accuracy: \", metrics.accuracy_score(y_test, y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fpr, tpr, thresholds = metrics.roc_curve(y_test,\n",
    "                        lr.predict_proba(X_test_tfidf)[:, [1]])\n",
    "auc = metrics.auc(fpr, tpr)\n",
    "\n",
    "plt.plot(fpr, tpr)\n",
    "plt.ylim(0, 1)\n",
    "plt.xlim(0, 1)\n",
    "plt.plot([0,1], [0,1], ls = \"--\", color = \"k\")\n",
    "plt.xlabel(\"False Postive Rate\")\n",
    "plt.ylabel(\"True Positive Rate\")\n",
    "plt.title(\"ROC Curve, auc: %.4f\" % auc);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy:  0.86456\n",
      "CPU times: user 144 ms, sys: 8.79 ms, total: 152 ms\n",
      "Wall time: 45.1 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "from sklearn import naive_bayes, ensemble\n",
    "bayes = naive_bayes.MultinomialNB(alpha=1)\n",
    "bayes.fit(X_train_tfidf, y_train)\n",
    "print(\"accuracy: \", bayes.score(X_test_tfidf, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy:  0.72388\n",
      "CPU times: user 42.6 s, sys: 80.9 ms, total: 42.6 s\n",
      "Wall time: 41.2 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "est = tree.DecisionTreeClassifier()\n",
    "est.fit(X_train_tfidf, y_train)\n",
    "print(\"accuracy: \", est.score(X_test_tfidf, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Top 50 terms:  ['bad', 'worst', 'wast', 'great', 'poor', 'bore', 'aw', 'no', 'love', 'excel', 'noth', 'stupid', 'perfect', 'best', 'terribl', 'disappoint', 'suppos', 'beauti', 'enjoy', 'tri', 'wors', 'world', 'fail', 'stori', 'one', 'film', 'favorit', 'amaz', 'good', 'plot', 'act', 'annoy', 'like', 'brilliant', 'script', 'time', 'alway', '1', 'reason', '4 10', 'even', 'see', 'save', 'also', 'today', 'mani', 'dull', 'movi', 'show', 'ridicul']\n"
     ]
    }
   ],
   "source": [
    "columns = [None] * len(tfidf.vocabulary_)\n",
    "for term in tfidf.vocabulary_:\n",
    "    columns[tfidf.vocabulary_[term]] = term\n",
    "result = pd.DataFrame({\"feature\": columns\n",
    "                    , \"importance\": est.feature_importances_})\n",
    "result = result.sort_values(\"importance\", ascending = False)\n",
    "result = result[result.importance > 0.0]\n",
    "print(\"Top 50 terms: \", list(result.feature[:50]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Important terms for a document "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "vocab_by_term = tfidf.vocabulary_\n",
    "vocab_by_idx = dict({(vocab_by_term[term], term) \n",
    "                                 for term in vocab_by_term})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"{'bromwel': 22087, 'high': 77073, 'cartoon': 24828, 'comedi': 31274, 'ran': 135967, 'time': 171635, \""
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "str(vocab_by_term)[:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"{40948: 'dialogu wooden', 155508: 'situat two', 92122: 'less make', 110635: 'movi theatr', 3549: 'ac\""
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "str(vocab_by_idx)[:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Content:\n",
      " this isn t the comedic robin williams nor is it the quirky insane robin williams of recent thriller fame this is a hybrid of the classic drama without over dramatization mixed with robin s new love of the thriller but this isn t a thriller per se this is more a mystery suspense vehicle through which williams attempts to locate a sick boy and his keeper also starring sandra oh and rory culkin this suspense drama plays pretty much like a news report until william s character gets close to achieving his goal i must say that i was highly entertained though this movie fails to teach guide inspect or amuse it felt more like i was watching a guy williams as he was actually performing the actions from a third person perspective in other words it felt real and i was able to subscribe to the premise of the story all in all it s worth a watch though it s definitely not friday saturday night fare it rates a 7 7 10 from the fiend \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "william         0.2851\n",
       "robin           0.2244\n",
       "robin william   0.1723\n",
       "thriller        0.1661\n",
       "7 7             0.1222\n",
       "                 ...  \n",
       "stori           0.0269\n",
       "charact         0.0264\n",
       "get             0.0254\n",
       "not             0.0188\n",
       "movi            0.0180\n",
       "Length: 131, dtype: float64"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx = 5\n",
    "print(\"Content:\\n\", X_train[idx])\n",
    "row = X_train_tfidf[idx]\n",
    "terms = [(vocab_by_idx[row.indices[i]], row.data[i])\n",
    "             for i, term in enumerate(row.indices)]\n",
    "pd.Series(dict(terms)).sort_values(ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "idx = 50\n",
    "row = X_train_tfidf[idx]\n",
    "terms = [(vocab_by_idx[row.indices[i]], row.data[i]) \n",
    "                 for i, term in enumerate(row.indices)]\n",
    "top_terms= list(pd.Series(dict(terms))\\\n",
    "                .sort_values(ascending = False)[:50].index)\n",
    "wc = WordCloud(background_color=\"white\", \n",
    "    width=500, height=500, max_words=50).generate(\"+\".join(top_terms))\n",
    "plt.figure(figsize=(10, 10))\n",
    "plt.imshow(wc)\n",
    "plt.axis(\"off\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Build Pipeline for classificaiton Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/feature_extraction/text.py:300: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens [\"'d\", \"'s\", 'could', 'might', 'must', \"n't\", 'need', 'sha', 'wo', 'would'] not in stop_words.\n",
      "  'stop_words.' % sorted(inconsistent))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 15s, sys: 454 ms, total: 1min 15s\n",
      "Wall time: 1min 13s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "         steps=[('tfidf',\n",
       "                 TfidfVectorizer(analyzer='word', binary=False,\n",
       "                                 decode_error='strict',\n",
       "                                 dtype=<class 'numpy.float64'>,\n",
       "                                 encoding='utf-8', input='content',\n",
       "                                 lowercase=True, max_df=1.0, max_features=None,\n",
       "                                 min_df=1, ngram_range=(1, 2), norm='l2',\n",
       "                                 preprocessor=None, smooth_idf=True,\n",
       "                                 stop_words=['i', 'me', 'my', 'myself', 'we',\n",
       "                                             'our', 'ours', 'ourselves', 'you...\n",
       "                                 token_pattern='(?u)\\\\b\\\\w\\\\w+\\\\b',\n",
       "                                 tokenizer=<function my_tokenizer at 0x1a25b347a0>,\n",
       "                                 use_idf=True, vocabulary=None)),\n",
       "                ('est',\n",
       "                 LogisticRegression(C=1.0, class_weight=None, dual=False,\n",
       "                                    fit_intercept=True, intercept_scaling=1,\n",
       "                                    l1_ratio=None, max_iter=100,\n",
       "                                    multi_class='warn', n_jobs=8, penalty='l2',\n",
       "                                    random_state=1, solver='saga', tol=0.0001,\n",
       "                                    verbose=0, warm_start=False))],\n",
       "         verbose=False)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "tfidf =feature_extraction.text.TfidfVectorizer(\n",
    "              tokenizer=my_tokenizer\n",
    "            , stop_words = stopwords\n",
    "            , ngram_range=(1, 2)\n",
    "        )\n",
    "\n",
    "pipe = pipeline.Pipeline([\n",
    "    (\"tfidf\", tfidf),\n",
    "    (\"est\", linear_model.LogisticRegression(C = 1.0, random_state = 1\n",
    "                            , n_jobs = 8, solver=\"saga\"))\n",
    "])\n",
    "pipe.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"/tmp/model.pkl\", \"wb\") as f:\n",
    "    pickle.dump(pipe, f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-rw-r--r--  1 abasar  wheel   125M Oct 25 12:05 /tmp/model.pkl\r\n"
     ]
    }
   ],
   "source": [
    "!ls -lh /tmp/model.pkl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"/tmp/model.pkl\", \"rb\") as f:\n",
    "    model = pickle.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "doc1 = \"\"\"when we started watching this series on \n",
    "cable i had no idea how addictive it would be \n",
    "even when you hate a character you hold back because \n",
    "they are so beautifully developed you can almost\n",
    "understand why they react to frustration fear greed \n",
    "or temptation the way they do it s almost as if the\n",
    "viewer is experiencing one of christopher s learning \n",
    "curves i can t understand why adriana would put up with \n",
    "christopher s abuse of her verbally physically and \n",
    "emotionally but i just have to read the newspaper to \n",
    "see how many women can and do tolerate such behavior \n",
    "carmella has a dream house endless supply of expensive \n",
    "things but i m sure she would give it up for a loving \n",
    "and faithful husband or maybe not that s why i watch \n",
    "it doesn t matter how many times you watch an episode\n",
    "you can find something you missed the first five times \n",
    "we even watch episodes out of sequence watch season 1 \n",
    "on late night with commercials but all the language a e \n",
    "with language censored reruns on the movie network whenever \n",
    "they re on we re there we ve been totally spoiled now i also \n",
    "love the malaprop s an albacore around my neck is my favorite of\n",
    "johnny boy when these jewels have entered our family vocabulary \n",
    "it is a sign that i should get a life i will when the series\n",
    "ends and i have collected all the dvd s and put the collection \n",
    "in my will\"\"\"\n",
    "doc1 = preprocess(doc1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/feature_extraction/text.py:300: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens [\"'d\", \"'s\", 'could', 'might', 'must', \"n't\", 'need', 'sha', 'wo', 'would'] not in stop_words.\n",
      "  'stop_words.' % sorted(inconsistent))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.7886])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict_proba(np.array([doc1]))[:, 1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hashing Vectorizer\n",
    "\n",
    "\n",
    "\n",
    "Convert a collection of text documents to a matrix of deterministic hash token (murmur3) occurrences\n",
    "\n",
    "It turns a collection of text documents into a scipy.sparse matrix holding token occurrence counts (or binary occurrence information), possibly normalized as token frequencies if norm=’l1’ or projected on the euclidean unit sphere if norm=’l2’.\n",
    "\n",
    "Advantages \n",
    "- it is very low memory scalable to large datasets as there is no need to store a vocabulary dictionary in memory\n",
    "- it is fast to pickle and un-pickle as it holds no state besides the constructor parameters\n",
    "- it can be used in a streaming (partial fit) or parallel pipeline as there is no state computed during fit.\n",
    "\n",
    "Disadvantages\n",
    "- there is no way to compute the inverse transform (from feature indices to string feature names) which can be a problem when trying to introspect which features are most important to a model.\n",
    "- there can be collisions: distinct tokens can be mapped to the same feature index. However in practice this is rarely an issue if n_features is large enough (e.g. 2 ** 18 for text classification problems).\n",
    "- no IDF weighting as this would render the transformer stateful."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.5774</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.5774</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>-0.5774</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.3015</td>\n",
       "      <td>0.6030</td>\n",
       "      <td>0.3015</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>-0.6030</td>\n",
       "      <td>-0.3015</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>-0.4472</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.4472</td>\n",
       "      <td>-0.4472</td>\n",
       "      <td>-0.4472</td>\n",
       "      <td>0.4472</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       0       1      2      3      4       5       6      7\n",
       "0 0.0000  0.5774 0.0000 0.5774 0.0000  0.0000 -0.5774 0.0000\n",
       "1 0.0000  0.3015 0.6030 0.3015 0.0000 -0.6030 -0.3015 0.0000\n",
       "2 0.0000 -0.4472 0.0000 0.0000 0.4472 -0.4472 -0.4472 0.4472"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hashing_vectorizer = feature_extraction.text.HashingVectorizer(n_features=2 ** 3\n",
    "                                            , tokenizer=my_tokenizer, ngram_range=(1, 2))\n",
    "\n",
    "corpus = [\"Today is Wednesday\"\n",
    "          , \"Delhi weather is hot today.\"\n",
    "          , \"Delhi roads are not busy in the morning\"]\n",
    "\n",
    "doc_term_matrix = hashing_vectorizer.fit_transform(corpus)\n",
    "\n",
    "pd.DataFrame(doc_term_matrix.toarray()) # Each cell is normalized (l2) row-wise\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2min 6s, sys: 389 ms, total: 2min 6s\n",
      "Wall time: 1min 57s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "n_features = int(X_train_tfidf.shape[1] * 0.8)\n",
    "\n",
    "hashing_vectorizer = feature_extraction.text.HashingVectorizer(n_features=n_features\n",
    "                                         , tokenizer=my_tokenizer, ngram_range=(1, 2))\n",
    "X_train_hash = hashing_vectorizer.fit_transform(X_train)\n",
    "X_test_hash = hashing_vectorizer.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<25000x193057 sparse matrix of type '<class 'numpy.float64'>'\n",
       "\twith 5383300 stored elements in Compressed Sparse Row format>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_hash"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((25000, 193057), (25000, 193057))"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_hash.shape, X_test_hash.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.040108710527420044 GB\n"
     ]
    }
   ],
   "source": [
    "print(X_train_hash.data.nbytes / (1024.0 ** 3), \"GB\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training accuracy:  0.92204\n",
      "Test accuracy:  0.87676\n",
      "CPU times: user 8.62 s, sys: 65.9 ms, total: 8.69 s\n",
      "Wall time: 1.51 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "lr = linear_model.LogisticRegression(C = 1.0, random_state = 1,\n",
    "                            solver = \"liblinear\")\n",
    "lr.fit(X_train_hash, y_train)\n",
    "y_train_pred = lr.predict(X_train_hash)\n",
    "y_test_pred = lr.predict(X_test_hash)\n",
    "print(\"Training accuracy: \", metrics.accuracy_score(y_train, y_train_pred))\n",
    "print(\"Test accuracy: \", metrics.accuracy_score(y_test, y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.88      0.87      0.88     12500\n",
      "           1       0.87      0.88      0.88     12500\n",
      "\n",
      "    accuracy                           0.88     25000\n",
      "   macro avg       0.88      0.88      0.88     25000\n",
      "weighted avg       0.88      0.88      0.88     25000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(metrics.classification_report(y_test, y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
